// 请求模块
import axios from 'axios'
// 在非组件模块中获取 store 必须通过这种方式
// 这里单独加载 store 和在组件中 this.$store 一样
import store from '@/store/'
import jsonBig from 'json-bigint'
const request = axios.create({
  // 基础路径
  baseURL: ' http://ttapi.research.itcast.cn/',
  // transformResponse 允许自定义原始的响应数据（字符串）
  transformResponse: [function (data) {
    try {
      // 如果转换成功则返回转换的数据结果
      return jsonBig.parse(data)
    } catch (err) {
      // 如果转换失败，则包装为统一数据格式并返回
      // console.log(err)
      return {
        data
      }
    }
  }]
})

// 请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const { user } = store.state
  // 如果用户已经登录，统一给接口设置 token 信息
  if (user) {
    config.headers.Authorization = `Bearer ${user.token}`
  }
  // 处理完之后一定要把 config 返回， 否则请求就会停在这里
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
// 响应拦截器

// 导出
export default request
